package com.douyuehan.doubao.wechatpay.utils;

import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * 时间处理类
 */
public class DateUtil {

    /**
     * 默认日期格式
     */
    public static final String DEFAULT_FORMAT = "yyyy-MM-dd HH:mm:ss";

    public static final String DEFAULT_FORMAT_DATE = "yyyy-MM-dd HH:mm";

    public static final String DATE_FORMAT = "yyyy-MM-dd";

    public static final String DATE_FORMAT_HOUR_MINUTE = "yyyy年MM月dd日 HH:mm";


    /**
     * 把日期字符串转换为日期
     * @param dateStr 日期字符串
     * @param format  日期格式 如:yyyy-MM-dd
     * @return 转换后的日期
     */
    public static Date stringToDate(String dateStr, String format) {
        SimpleDateFormat df = new SimpleDateFormat(format);
        Date resultDate = null;
        try {
            resultDate = df.parse(dateStr);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        return resultDate;
    }

    public static String timestampToString(Timestamp stamp, String format) {
        DateFormat sdf = new SimpleDateFormat(format);
        try {
            return sdf.format(stamp);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 计算时间差
     *
     * @param endTime
     * @param biginTime
     */
    public static long diffTime(String endTime, String biginTime, String format) {
        DateFormat df = new SimpleDateFormat(format);
        try {
            Date timeEnd = df.parse(endTime);
            Date timeBegin = df.parse(biginTime);
            long diff = timeEnd.getTime() - timeBegin.getTime();
            // (1000 * 60 * 60 * 24)
            long day = diff / 1000;
            return day;
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return 0;
    }

    /**
     * 获取当前时间戳
     */
    public static Timestamp getCurrentTimestamp() {
        return new Timestamp(System.currentTimeMillis());
    }

    /***
     * 使用默认方式格式化日期
     * @param date 日期
     *             format 格式类型
     * @return 返回日期的字符串
     * @author gao shiyong
     */
    public static String dateToStr(Date date, String format) {
        if (null == date) {
            return null;
        }
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format(date);
    }

    /**
     *
     * @param nowTime   当前时间
     * @param startTime	开始时间
     * @param endTime   结束时间
     * @return
     * @author sunran   判断当前时间在时间区间内
     */
    public static boolean isEffectiveDate(Date nowTime, Date startTime, Date endTime) {
        if (nowTime.getTime() == startTime.getTime() || nowTime.getTime() == endTime.getTime()) {
            return true;
        }

        Calendar date = Calendar.getInstance();
        date.setTime(nowTime);

        Calendar begin = Calendar.getInstance();
        begin.setTime(startTime);

        Calendar end = Calendar.getInstance();
        end.setTime(endTime);

        if (date.after(begin) && date.before(end)) {
            return true;
        } else {
            return false;
        }
    }

    /***
     * @comments 计算两个时间的时间差
     * @param strTime1
     * @param strTime2
     */
    public static Long getTimeDifference(String strTime1,String strTime2) {
        //格式日期格式，在此我用的是"2018-01-24 19:49:50"这种格式
        //可以更改为自己使用的格式，例如：yyyy/MM/dd HH:mm:ss 。。。
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        long l =0;
        try{
            Date now = df.parse(strTime1);
            Date date=df.parse(strTime2);
            l=now.getTime()+30*60*1000-date.getTime();       //获取时间差
            l=l/1000;
        }catch(Exception e){
            e.printStackTrace();
        }
        return l;
    }



}
